/**
 * JWT替代中间件
 */

const { secret } = require('../config.json');
const { verify } = require('jsonwebtoken');

module.exports = async (ctx, next) => {
    const { authorization } = ctx.headers;
    const { url } = ctx;
    // 一种是login页面，那么可以没有token
    if (!/\/login/.test(url)) {
        // 另一种是非login页面，那么久要校验token
        if (!authorization) {
            return ctx.status = 401;
        }
        const token = authorization.split(' ').pop();
        try {
            const user = verify(token, secret);
            ctx.state.user = user;
        } catch (error) {
            return ctx.status = 401;
        }
    }
    await next();
}